#ifndef SCENENODE_H
#define SCENENODE_H

#include "Framework/Prerequisites.h"

#include "Scene/Node.h"

namespace tyro
{
	namespace Scene
	{

		class SceneNode : public Node
		{
		public:

			typedef ::stdext::hash_map<String, Geometry::Object*> ObjectMap;


			SceneNode(ISceneManager* mgr);
			SceneNode(ISceneManager* mgr, String name);

			virtual void Update();
			virtual SceneNode* CreateChildSceneNode(const Math::Vector3f& translation = Math::Vector3f::ZERO,
												const Math::Quaternionf& rotation = Math::Quaternionf::IDENTITY); 

			Node* CreateChildImpl(void);
			Node* CreateChildImpl(const String& name);


			virtual void AttachObject(Geometry::Object* obj); 

			virtual void FindVisibleObjects(Camera::Camera* camera, IRenderQueue* renderQueue, bool includeChildren); 
		protected:
		private:
			ISceneManager* sceneManager; 
			ObjectMap objectMap;
		};
	}
}

#endif